package com.infore.airsupervise.app;


import android.content.Context;

import com.amap.api.maps.CoordinateConverter;
import com.amap.api.maps.model.LatLng;

import static java.lang.Math.atan2;
import static java.lang.Math.cos;
import static java.lang.Math.sin;
import static java.lang.Math.sqrt;

/**
 * 导航
 * Created by xiaotao on 2017/5/24.
 */

public class NaviManager {

    /**
     * 调起外部 百度地图app
     * @param originName 起点名称
     * @param originLat 起点纬度
     * @param originLng 起点经度
     * @param desName 终点名称
     * @param desLat 重点 纬度
     * @param desLng 终点经度
     * @return
     */
    public  static String getBaiduUri (String originName ,
                                       double originLat ,
                                       double originLng ,
                                       String desName ,
                                       double desLat ,
                                       double desLng ){
        String uri = "baidumap://map/direction" +
                "?origin=latlng:%1$s,%2$s|name:%3$s&destination=latlng:%4$s,%5$s|name:%6$s&mode=driving";
        return String.format(uri,originLat,originLng,originName,desLat,desLng,desName) ;
    }

    /**
     * 调用网页百度地图
     * @param originName
     * @param originLat
     * @param originLng
     * @param desName
     * @param desLat
     * @param desLng
     * @param packageName
     * @return
     */
    public static String getWebBaiduMapUri(String originName ,
                                           double originLat ,
                                           double originLng ,
                                           String desName ,
                                           double desLat ,
                                           double desLng,
                                           String packageName) {
        String uri ="http://api.map.baidu.com/direction" +
                "?origin=latlng:%1$s,%2$s|name:%3$s&destination=latlng:%4$s,%5$s|name:%6$s&mode=driving&region=长沙&output=html&src=%7$s|测试";
        return String.format(uri, originLat, originLng, originName, desLat, desLng, desName, packageName);
    }

    /**
     * 高德地图
     * @param appName  应用名
     * @param lat 终点经纬度
     * @param lng
     * @return
     */
    public static String getgaodeUri(String appName ,
                                     double lat ,
                                     double lng ){
        String uri = "androidamap://navi?sourceApplication=%1$s&poiname=&lat=%2$s&lon=%3$s&dev=1&style=2";
        return String.format(uri,appName,lat,lng);
    }

    public static LatLng Coordinate(Context ctx ,double lat , double lnt ){
        CoordinateConverter convert = new CoordinateConverter(ctx);
        convert.from(CoordinateConverter.CoordType.GPS);
        convert.coord(new LatLng(lat,lnt));
        LatLng desLatLng = convert.convert();
        return desLatLng ;
    }


    public static LatLng BD_encrypt(double gg_lat, double gg_lon) {
        double x = gg_lon, y = gg_lat;
        double z = sqrt(x * x + y * y) + 0.00002 * sin(y * Math.PI);
        double theta = atan2(y, x) + 0.000003 * cos(x * Math.PI);
        double bd_lon = z * cos(theta) + 0.0065;
        double bd_lat = z * sin(theta) + 0.006;
        return new LatLng(bd_lat,bd_lon);
    }
}
